EC2 Instance ประเภท T คืออะไร? จะใช้งานได้ดีและถูกจริงๆเหรอ?
สวัสดีครับ ต้า ครับ
EC2 นั้นมี Instance Type หลากหลายประเภทมากๆเลยใช่ไหมครับ
สำหรับผูเริ่มใช้ AWS นั้นคงมีโอกาสได้ใช้ Instance Type t หรือ m ที่เป็นตัวที่มีความยืดหยุ่นสูงกันมาไม่น้อยใช่ไหมครับ
ซึ่งเมื่อไปดูตารางค่าใช้จ่ายระหว่างประเภท t และ m จะเจอราคาประมาณนี้ครับ
*หมายเหตุ ในตารางเป็นราคาเปรียบเทียบของ Linux ครับ
Instance Type | vCPU | Memory[GiB] | ค่าใช้จ่าย(Singpore)[USD/ชั่วโมง] |
---|---|---|---|
t3.large | 2 | 8 | 0.1056 USD |
m5.large | 2 | 8 | 0.12 USD |
จะเห็นว่าสเปคเหมือนกันแท้ๆ แต่ t3.large
นั้นราคาถูกกว่าค่อนข้างเยอะเลยครับ
แต่อย่าพึ่งรีบตัดสินใจไปลองอ่านบทความนี้ให้จบกันก่อนนะครับ
หากตรงกับเงื่อนไขต่อไปนี้ อย่าพึ่งตัดสินใจใช้ instance type t นะครับ!!
- พึ่งเคยใช้ AWS เป็นครั้งแรก
- ใช้ในสภาพแวดล้อมที่เอาไปใช้ในงานจริง
- เป็น System ที่ใช้สำหรับเปิดให้ใช้งานภายนอกทั่วไป (ไม่ใช้ระบบที่ใช้งานแค่ภายในบริษัท)
หากตรงกับเงื่อนไขที่กล่าวไปนี้ผมแนะนำให้อ่านบทคาวมนี้ก่อนเพื่อพิจารณาว่าจะใช้ instance type t จริงหรือเปล่า
เนื้อหาในบทความนี้เป็นเนื้อหาที่ต้องการส่งไปยังผู้เริ่มใช้งาน AWS ไม่ได้เป็นการปฏิเสธหรือห้ามไม่ให้ผู้ใช้งาน AWS ที่ช่ำชองหรือเข้าใจใน instance type t ใช้งาน instance type t ในสภาพแวดล้อมที่เอาไปใช้ในงานจริง หรือ System ที่ใช้สำหรับเปิดให้ใช้งานภายนอกทั่วไป
ต้องการ Burstable performance instances หรือไม่
instance type t มีชื่อเรียกอีกอย่างนึงว่า Burstable performance instances ครับ ลองไปตรวจสอบ AWS Document กันดูครับ
The T instance family provides a baseline CPU performance with the ability to burst above the baseline at any time for as long as required. The baseline CPU is defined to meet the needs of the majority of general purpose workloads, including large-scale micro-services, web servers, small and medium databases, data logging, code repositories, virtual desktops, development and test environments, and business-critical applications. Burstable performance instances - Amazon Elastic Compute Cloud
สิ่งที่สำคัญคือประโยคนี้ครับ
The T instance family provides a baseline CPU performance with the ability to burst above the baseline at any time for as long as required.
การจะใช้ instance type t จำเป็นต้องคิดว่าสเปคที่เราจะใช้ มันพอเพียงกับ baseline รึเปล่าครับ
ตัวอย่างเช่น กรณีของ t3.large
มี Baseline utilization per vCPU อยู่ที่ 30% และมี vCPUs อยู่ที่ 2 ตัว พอนำไปคำนวณก็จะได้ 30[%] * 2[vCPU] = 60[%]
นั่นหมายความว่าหาก สเปคที่เราต้องการมีการใช้งาน CPU ปกติอยู่ที่ต่ำกว่า 60 % จะสามารถใช้งาน t3.large ได้ครับ
แต่ในส่วน CloudWatch Metrics จะแสดงออกมาเป็น vCPU แต่ละตัวออกมา ทำให้ baseline CPU performance ของ t3.large
(CPUUtilization) จะอยู่ที่ 30% ครับ
หากปกติเราใช้งาน vCPU ในแต่ละตัวอยู่ที่ 40% สักวันเราก็จะเสีย CPU Credit ไปจนหมด และถูกบังคับให้ใช้งาน CPU อยู่ที่ 30% ครับ
สำหรับใครที่อยากตรวจสอบว่า instance type t ตัวอื่นมี Baseline utilization per vCPU และ vCPUs อยู่ที่เท่าไรสามารถตรวจสอบได้ที่ตารางด้านล่างนี้ หรือเพื่อให้แน่ใจสามารถเช็คข้อมูลได้ที่ AWS Document ด้านล่าง(ใน AWS Document จะมีการอัพเดทข้อมูลอยู่ตลอด)
Key concepts and definitions for burstable performance instances - Amazon Elastic Compute Cloud
Instance type | CPU credits earned per hour | Maximum earned credits that can be accrued* | vCPUs*** | Baseline utilization per vCPU |
---|---|---|---|---|
T2 | ||||
t2.nano |
3 | 72 | 1 | 5% |
t2.micro |
6 | 144 | 1 | 10% |
t2.small |
12 | 288 | 1 | 20% |
t2.medium |
24 | 576 | 2 | 20%** |
t2.large |
36 | 864 | 2 | 30%** |
t2.xlarge |
54 | 1296 | 4 | 22.5%** |
t2.2xlarge |
81.6 | 1958.4 | 8 | 17%** |
T3 | ||||
t3.nano |
6 | 144 | 2 | 5%** |
t3.micro |
12 | 288 | 2 | 10%** |
t3.small |
24 | 576 | 2 | 20%** |
t3.medium |
24 | 576 | 2 | 20%** |
t3.large |
36 | 864 | 2 | 30%** |
t3.xlarge |
96 | 2304 | 4 | 40%** |
t3.2xlarge |
192 | 4608 | 8 | 40%** |
T3a | ||||
t3a.nano |
6 | 144 | 2 | 5%** |
t3a.micro |
12 | 288 | 2 | 10%** |
t3a.small |
24 | 576 | 2 | 20%** |
t3a.medium |
24 | 576 | 2 | 20%** |
t3a.large |
36 | 864 | 2 | 30%** |
t3a.xlarge |
96 | 2304 | 4 | 40%** |
t3a.2xlarge |
192 | 4608 | 8 | 40%** |
T4g | ||||
t4g.nano |
6 |
144 |
2 |
5%** |
t4g.micro |
12 |
288 |
2 |
10%** |
t4g.small |
24 |
576 |
2 |
20%** |
t4g.medium |
24 |
576 |
2 |
20%** |
t4g.large |
36 |
864 |
2 |
30%** |
t4g.xlarge |
96 |
2304 |
4 |
40%** |
t4g.2xlarge |
192 |
4608 |
8 |
40%** |
CPU Credit
CPU credit คือสิ่งที่เราจะเสียเมื่อ Burstable performance instances ใช้งาน CPU ครับ โดยเมื่อเราทำการใช้งาน EC2 instance จำเป็นต้องใช้งาน CPU อยู่แล้ว ทำให้เราจำเป็นต้องเสีย CPU Credit อยู่ตลอดเวลาครับ โดย 1 CPU Credit จะใช้งาน vCPU 100% ได้ 1 นาที หรือตามข้อความด้านล่างนี้ครับ
CPU credit
A unit of vCPU-time.
Examples:
1 CPU credit = 1 vCPU * 100% utilization * 1 minute.
1 CPU credit = 1 vCPU * 50% utilization * 2 minutes
1 CPU credit = 2 vCPU * 25% utilization * 2 minutes
Key concepts and definitions for burstable performance instances - Amazon Elastic Compute Cloud
เมื่อมีการเสียก็ต้องมีการได้รับคืนครับ ทุกๆ instance type จะได้รับ CPU Credit ตามจำนวนที่กำหนดไว้ครับ โดย t3.large จะเป็นตามตารางนี้ครับ
Instance type | จำนวน CPU Credit ที่ได้รับมากสุดต่อ 1 ชั่วโมง | จำนวน CPU Credit ที่สามารถกักเก็บไว้ได้มากที่สุด | vCPU | Baseline utilization per vCPU[%] | เวลาที่สามารถ Brust ได้มากที่สุด[ชั่วโมง] |
---|---|---|---|---|---|
A | B | C = B * 24[ชั่วโมง] | D | E = B / D / 60[นาที] * 100[%] | F = C / D / 60[นาที] |
t3.large | 36 | 864 | 2 | 30 | 7.2 |
สิ่งสำหรับที่ควรดูคือ จำนวน CPU Credit ที่ได้รับมากสุดต่อ 1 ชั่วโมง ครับ เพราะนอกจากนี้เป็นค่าที่ถูกนำไปคำนวณครับจากจำนวน CPU Credit ที่ได้รับมากสุดต่อ 1 ชั่วโมงครับ ในหัวข้อที่ผ่านมาผมได้เขียนไว้ว่าให้เลือกการจะใช้ instance type t จำเป็นต้องคิดว่าสเปคที่เราจะใช้ มันพอเพียงกับ baseline แต่ถ้าจะเขียนให้ถูกต้องคือ baseline นั้นถูกคำนวณมาจาก การใช้จ่าย CPU Credit ให้เพียงพอ ครับ และก็สามารถใช้ไปคำนวณเวลาที่สามารถ Brust ได้มากที่สุด[ชั่วโมง](เวลาที่ใช้ CPU 100% โดยนับจากเวลาที่มีจำนวน CPU Credit ที่สามารถกักเก็บไว้ได้มากที่สุด) ในกรณีที่ต้องการใช้ CPU จำนวนมากในเวลานึง เช่นการประมวลผลแบบ Batch ก็ลองไปพิจารณาการใช้ Burstable performance instances ได้ครับ
Unlimited mode และ Standard mode
Standard mode
เป็นการตั้งค่า mode ของ Credit ชนิดนึงครับ ในโหมดนี้เราจะเผาจำนวน CPU Credit เพื่อ Brust CPU ให้เกิน baseline ตามที่เขียนไว้ด้านบน
Unlimited mode
เป็นการตั้งค่า mode ของ Credit ชนิดนึงครับ ในโหมดนี้จะ Brust CPU ให้เกิน baseline เป็นระยะเวลาใดก็ได้เมื่อจำเป็น โดยมีเงื่อนไขคือ CPU ที่ใช้งานเฉลี่ย โดยเฉลี่ยตลอด 24 ชั่วโมงล่าสุด หรือหากใช้งานไม่ถึง 24 ชั่วโมงจะ เฉลี่ยตามเวลาที่ instance เปิดใช้งาน ต้องต่ำกว่า baseline ที่กำหนดไว้ ทำให้สามารถ cover การเกิด Spike กับ CPU ได้
หากใช้เปอร์เซ็นการใช้ CPU มากกว่า baseline เป็นจำนวนมากจะมีค่าใช้จ่ายเพิ่มเติมในแต่ละช่วงเวลา vCPU
โดยค่าใช้จ่ายเพิ่มเติมสำหรับ Unlimited mode จะมีราคาอยู่เท่านี้ครับ
สำหรับ T4g * 0.04 USD ต่อ vCPU/ชั่วโมงสำหรับ Linux, RHEL และ SLES
สำหรับ T2 และ T3 * 0.05 USD ต่อ vCPU/ชั่วโมงสำหรับ Linux, RHEL และ SLES * 0.096 USD ต่อ vCPU/ชั่วโมงสำหรับ Windows และ Windows ที่ใช้ SQL Web
อ้างอิง: ราคา EC2 Instance ตามความต้องการ – Amazon Web Services
ประเภทที่ใช้ Standard mode เป็น Default ได้แก่
- T2
ประเภทที่ใช้ Unlimited mode เป็น Default ได้แก่
- T4g
- T3a
- T3
หากสนใจรายละเอียดเพิ่มเติมสามารถดูได้ที่ Key concepts and definitions for burstable performance instances - Amazon Elastic Compute Cloud
งั้นเรามาลองเปรียบเทียบระหว่าง T3 กับ M5 เพื่อดูว่าใช้ vCPU แบบแยกทีละตัวเท่าไรถึงจะได้ราคาที่ถูกกว่ากันนะครับ (ใช้ Singpore Region ในการตรวจสอบ)
インスタンスタイプ | A | t3.large | t3.xlarge | t3.2xlarge |
---|---|---|---|---|
จำนวน vCPU | B | 2 | 4 | 8 |
ราคาของ T3[USD/ชั่วโมง} | C | 0.1056 | 0.2112 | 0.4224 |
ราคาของ M5[USD/ชั่วโมง] | D | 0.12 | 0.24 | 0.48 |
ส่วนต่าง[USD] | E = D - C | 0.0144 | 0.0288 | 0.0576 |
T3 baseline performance ของแต่ละ vCPU[%] | F | 30% | 40% | 40% |
ค่าใช้จ่ายเพิ่มเติมต่อ vCPU ที่ใช้งานเกินมา[USD/ชั่วโมง] | G | 0.05 | 0.05 | 0.05 |
ค่าใช้จ่ายต่อเวลา(นาที)ของ vCPU[USD/นาที] | H = G / 60 | 0.000833 | 0.000833 | 0.000833 |
vCPU ที่สามารถ Brust ได้[นาที] | I = E / H | 17.29 | 34.57 | 69.15 |
CPU ที่สามารถใช้งานเพิ่มได้[%] | J = (I / 60) / B | 14.40% | 14.40% | 14.40% |
สรุป CPU ที่สามารถใช้ได้โดยคุ้มทุน[%] | K = F + J | 44.40% | 54.40% | 54.40% |
หากเป็นกรณีของ .large หากใช้งานไม่ถึง 44.40% จะถือว่าประเภท T3 ใช้งานได้ถูกกว่าครับ
สรุป
ก็จบไปแล้วนะครับกับหัวข้อที่ว่าควรใช้ instance type t รึเปล่า ซึ่งผมก็ขอสรุปกันอีกรอบว่ามีเหตุผลอะไรบ้างที่ต้องคำนึงถึงและทำความเข้าใจ
- ระบบ CPU Credit
- ค่าใช้จ่ายเพิ่มเติมของ Unlimited mode
- มีการใช้ CPU แบบไหน
หากเราทำความเข้าใจกับ instance type t แล้วจริงๆ จะนำไปใช้กับสถาการณ์จริงๆก็ได้หากนั่นเป็นสิ่งที่เข้ากันได้กับ Workload ของท่าน แต่ถ้าเกิดยังรู้สึกไม่แน่ใจ ไม่เข้าใจก็ลองอ่านบทความนี้ใหม่อีกรอบหรืออ่านลิ้งค์ข้อมูลต่างๆด้านล่างนี้ได้ครับ
บทความต้นฉบับ
ちょっと待ってください!あなたが使うべきは本当にT系インスタンスですか!? | DevelopersIO
บทความที่เกี่ยวข้อง
- ประเภท Amazon EC2 Instance - Amazon Web Services
- ราคา EC2 Instance ตามความต้องการ – Amazon Web Services
- Burstable performance instances - Amazon Elastic Compute Cloud
- Key concepts and definitions for burstable performance instances - Amazon Elastic Compute Cloud
ดูรายละเอียดเพิ่มเติมได้ที่นี่ | สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่ |